<?php 
/**
 * 分类管理控制器
 */
class CategoryController extends AuthController{
	private $model;
	
	//自动调用
	public function __init(){
		parent::__init();
		//关联模型
		$this->model = K('Category');
	}		
	
	//分类首页
	public function index(){
		//查询数据
		$data = $this->model->all();
		//转成树状结构
		$data = Data::tree($data,'cname','cid','pid');
		//分配数据
		$this->assign('data',$data);
		
		//排序方法
//		if(IS_POST){
//			p($_POST);
//		}
		//载入模板
		$this->display();
	}
	
	//添加顶级分类
	public function add(){
		if(IS_POST){
			//调用模型的添加，里面包含自动验证
		 	if(!$this->model->addCategory()){
		 		$this->error($this->model->error);
		 	} 
			$this->success('添加分类成功',U('Admin/Category/index'));
		}
		//载入模板		
	    $this->display();
	}
	
	//添加子分类
	public function addSon(){
		//获得父级分类数据
		//获得get里面的cid
		$cid = Q('get.cid',0,'intval');	
		//执行sql查询
		$oldData = 	$this->model->where("cid={$cid}")->find();
		//分配数据
		$this->assign('oldData',$oldData);
		//获得类型表数据
		$type = K('Type')->all();
		//分配类型表数据
		$this->assign('type',$type);
		//添加子分类
		if(IS_POST){
			if(Q('post.type_tid')==0){
				$this->error('请选择分类类型');
			}
			//调用模型的添加，里面包含自动验证
		 	if(!$this->model->addCategory()){
		 		$this->error($this->model->error);
		 	} 
			$this->success('添加子分类成功',U('Admin/Category/index'));
		}		
	    $this->display();
	}	
	
	//获得子集分类cid
	public function getSon(){
		if(!IS_AJAX) $this->error('非法请求',U('Admin/Index/index'));
		$cid = Q('post.cid',0,'intval');
		//获得$cid所对应的所有的子集分类
		$data = $this->model->all();
		$sonCid = $this->model->sonCid($data,$cid);
		//返回给js数据
		$this->ajax($sonCid);
	}	
	
	//修改分类
	public function edit(){
		
		//获得旧数据
		//获得get里面的cid
		$cid = Q('get.cid',0,'intval');
		//查询分类数据
		$oldData = $this->model->where("cid={$cid}")->find();
		//分配数据
		$this->assign('oldData',$oldData);
		//查询是否顶级分类
		//执行sql
		$pid = $this->model->field('pid')->where("cid={$cid}")->find();
		//获得当前分类pid
		$pid=$pid['pid'];
		//分配数据
		$this->assign('pid',$pid);
		
		//获得类型表数据
		$type = K('Type')->all();
		//分配类型表数据
		$this->assign('type',$type);	
		
		//处理所属分类
		//1.找到自己和自己的子集
		//找到所有分类
		$cateData = $this->model->all();
		//获得当前cid下的所有子集
		$sonCid = $this->model->sonCid($cateData,$cid);
		//将当前cid压入数组
		$sonCid[] = $cid;
		//2.排除掉自己和自己的子集
		//将$sonCid转成字符串
		$str=implode(',', $sonCid);
		//查询数据,排除掉自己和自己的子集
		$cateData = $this->model->where("cid NOT IN($str)")->all();
		//转成树状结构
		$cateData = Data::tree($cateData, 'cname');
		//分配数据
		$this->assign('cateData',$cateData);	
						
		//修改数据
		if(IS_POST){
			//获得get里面的cid
			$cid = Q('get.cid',0,'intval');
			//调用模型里的Brandedit并验证
			if(!$this->model->Cateedit($cid)){
				$this->error($this->model->error);
			}
			//成功提示
			$this->success('修改分类成功',U('Admin/Category/index'));
		}
		//载入模板
		$this->display();
	}
	
	//删除分类
	public function del(){
		//获得get里面的cid
		$cid = Q('get.cid',0,'intval');
		//判断该分类下面是否有子集分类,如果有则提示
		if($this->model->where("pid={$cid}")->find()){
			$this->error('请先删除该分类的子分类');
		}	
		//获得pid
		$oldData = $this->model->where("cid={$cid}")->find();
		$pid = $oldData['pid'];
		//删除顶级分类图片
		if($pid==0){
			unlink($oldData['toppic']);
		}
		//执行sql
		$this->model->where("cid={$cid}")->delete();
		//成功提示
		$this->success('删除分类成功');			  
	}
}






 ?>